// 权限控制
// 导入模块
import store from '@/store'
import router from './router'
import NProgress from 'nprogress' // 进度条，
import 'nprogress/nprogress.css' // 进度条样式
import getPageTitle from './utils/get-page-title'
// 1.添加路由前置守卫  2.设置白名单
const whiltList = ['/login', '/404']
router.beforeEach(async(to, from, next) => {
  // 跳转开始的时候添加进度条
  NProgress.start()
  // 获取token
  const token = store.state.user.token
  // 判断是否有token
  if (token) {
    // 如果没有用户的id,就发送请求
    // 如果已经获取到了userId了，就表示已经取到用户的名字和头像信息了，就不必要再发请求了
    if (!store.getters.userId) {
      // 在登录到首页之前先获取到用户信息
      await store.dispatch('user/getuserinfo')
    }
    // 有token并且去的是登录页
    if (to.path === '/login') {
      next('/')
      NProgress.done()
    } else {
      next()
    }
  } else {
    // 如果没有token，但去的是白名单，就放行
    if (whiltList.includes(to.path)) {
      next()
      // 没有token,也不在白名单之内,打回首页
    } else {
      next('/login')
      NProgress.done()
    }
  }
})
// 添加路由前置守卫，来设置标题
router.beforeEach((to, from, next) => {
  document.title = getPageTitle(to.meta.title)
  next()
})
// 添加后置路由守卫
router.afterEach(() => {
  // 页面跳转结束添加进度条
  NProgress.done()
})
